[JavaScript] forEach, map, reduce 實作

前言

紀錄一下內建函式的實作。

forEach

1
2
3
4
5
Array.prototype.forEach = function(fn){
for ( var i = 0; i < this.length; i ++ ){
fn(this[i], i);
}
}

map

1
2
3
4
5
6
7
Array.prototype.map = function(fn){
var newArray = [];
for ( var i = 0; i < this.length ; i++ ){
newArray.push(fn(this[i], i));
}
return newArray;
}

reduce

1
2
3
4
5
6
7
8
Array.prototype.reduce = function(fn, initValue){
var result = initValue || this[0] ;
var initIndex = initValue ? 0 : 1;
for ( var i = initIndex; i < this.length; i ++ ){
result = fn(result, this[i], i);
}
return result;
}